A data processing environment comprises a variety of hardware, software, and firmware networking components. A physical network, also called a data plane or an underlay, is a network of physical components where an actual networking operations are performed and computational workloads are executed.
Techniques are available presently to construct a logical network, also known as a software defined network (SDN) overlay (hereinafter interchangeably, “SDN” or “overlay”), from such networking components. Essentially, networking components are abstracted into corresponding logical or virtual representations, and the abstractions are used to define the SDN. In other words, an SDN is a logical network formed and operated using logical representations of the underlying physical components.
Physical networks usually exist within the demarcated boundary of the data processing environment whose physical components are utilized in the physical network. Unlike a physical network, an SDN can be designed to span across one or more data processing environment. For example, while a physical network may be contained within a datacenter, an SDN may span across one or more datacenters.
As an example, a logical representation of a hypervisor can participate in an SDN, such that a function attributed to the logical representation of the hypervisor in the SDN is actually performed by the underlying hypervisor component in the underlay. Similarly, a logical representation of a switch or a networking gateway can participate in an SDN, such that a function attributed to the logical representation of the switch or the networking gateway in the SDN is actually performed by the underlying switch or the networking gateway component, respectively, in the underlay.
A physical computing machine can be represented and used in an SDN as a virtual device, which is also referred to as a Network Virtualization Edge (NVE) in an SDN. An application configured to execute on an edge essentially is executed on the underlying physical computing machine in a similar manner.
In an SDN, because the actual physical networking components that perform the networking functions are abstracted into logical entities representing the networking functionality offered by those components and not the actual implementations of those functionalities, something is needed to direct those networking functionalities into a functioning logical network. An SDN controller is a component that manages and operates the logical networking components within an SDN.
Henceforth in this disclosure, any reference to a component within the context of an SDN is a reference to a logical representation of the component, which participates in the SDN, unless expressly distinguished where the reference is made. For example, a reference to a hypervisor in communication with an SDN controller is a reference to a logical representation of the hypervisor that operates in the SDN managed by the SDN controller and not to the hypervisor component of a machine that actually performs a task in the physical network. Similarly, as another example, a reference to a function performed by an application on an edge, or a reference to a function caused to occur on such an application by the SDN controller, is a reference to the function performed by the execution of the application on the underlying physical computing machine.
A variety of SDNs is presently configurable, each with independent service models, topologies, and addressing architectures, over the same physical network. Overlay network methodology is an extensively used model to fulfill such network virtualization. Internet Engineering Task Force (IETF) has a Network Virtualization Overlays (NVO3) work group, which has proposed several overlay protocols, for example, VXLAN, NVGRE, and STT, to achieve network virtualization. These standards and protocols have been extensively adopted by many networking vendors, switch manufacturers, and cloud service providers.
Any reference herein to an NVO3 network is not intended to limit the scope of the illustrative embodiments to a particular specification, standard, or protocol produced by the IETF NVO3 work group, but is intended as a non-limiting example in which an embodiment can be practiced. An embodiment described herein is generally usable with an SDN that may or may not conform to a product of IETF NVO3. From this disclosure, those of ordinary skill in the art will be able to adapt an embodiment to other types of SDNs, and such adaptations are contemplated within the scope of the illustrative embodiments.
Data processing environments often provide multiple resources, such as servers, to handle certain workloads. For example, a popular website or service is often supported by multiple web servers so that requests for the site or service from numerous browsers can be handled efficiently and without unacceptable delays.
The technique for distributing competing or similar workloads across a pool of similar or analogous resources is called load balancing. A load balancer is an application or a component that implements load balancing for a given pool of resources. Data processing systems and applications are some examples of resources, whose multiple instances can be pooled and managed by a load balancer. Requests, data transmissions, and job submissions directed towards such data processing systems or application instances are some examples of workloads that a load balancer can direct or manage for the resource pool.
Many different types of algorithms are presently available for load balancing. A load balancer executes a load balancing algorithm to select an instance of a pooled resource to which a given workload should be directed.
Load balancers are useful in an SDN as well. For example, a client—which is typically a virtual machine (VM) executing an application or workload on an edge in the SDN—sends a request packet to a server application. The server application may be supported by a pool of load-balanced servers (real servers) operating in the underlay. A load-balancer is usable for routing the packet from the VM in the SDN to a real server in the pool.